package stage_1_module_1.code;

/***
 * 编程题实现双色球抽奖游戏中奖号码的生成，中奖号码由6个红球号码和1个蓝球号码组成。
 * 其中红球号码要求随机生成6个1~33之间不重复的随机号码。其中蓝球号码要求随机生成1个1~16之间的随机号码。
 * 
 * 1.用1左移33位生成一个位图list
 * 2.每次随机从1~33获取一个数n，并用1左移n位得到tmppos
 * 3.用list和tmppos按位与运算，如果结果为tmppos，说明已经生成过，继续循环直到满足6个随机数
 * 4.如果3中按位与运算结果不为tmppos，说明没生成过，输出该随机数并将list和tmppos进行按位或运算，占位
 */

public class homework_3 {
    public static void main(String[] args) {
        long list=1;
        list = list<<33;
        int count = 0;
        while(true) {
            if (count >=6) {
                break;
            }
            int tmp = (int) (Math.random() * 33 + 1);
            long tmppos = 1 << tmp;
            if ((list & tmppos) == tmppos) {
                continue;
            } else {
                System.out.println(tmp);
                list = list | tmppos;
                count++;
            }
        }
        System.out.println((long) (Math.random() * 16 + 1));
    }
}
